﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ACEMUD
{
    /// <summary>
    /// Class containing all the rooms that are loaded.
    /// </summary>
    public class MultipleRooms : List<Room>
    { }

    /// <summary>
    /// Class containing all the information needed to describe a room.
    /// </summary>
    public class Room
    {
        // Properties
        public List<Exit> Exits = new List<Exit>();
        public string Name { get; set; }        // Name of the room
        public string Description { get; set; } // Description for the room
        private uint _roomID;                   // Private room ID number
        public uint RoomID                      // Public room ID number
        {
            get
            {
                return _roomID;
            }
        }

        // Constructor
        /// <summary>
        /// Creates a room object.
        /// </summary>
        /// <param name="RoomID">An unsigned-int containing the ID number for the room.  Must be unique.</param>
        public Room(uint RoomID)
        {
            this._roomID = RoomID;
        }
    }

    public class Exit
    {
        // Properties
        public uint LinkToRoom { get; set; }        // The roomID the exit links to
        public bool CanToggleState { get; set; }    // Determines whether the door can be opened closed.
        public bool State { get; set; }             // The actual state of the exit (true=open/false=closed)
        public string Name { get; set; }            // The Name (such as "East") that will be displayed.
        public string ShortName { get; set; }       // A short name (such as "e") that can also be used to invoke the exit.
        public bool Hidden { get; set; }            // Whether the exit is hidden or not.  Hidden doesn't effect whether it's usuable or not, just if it's displayed.

        public Exit(uint RoomID)
        {
            this.LinkToRoom = RoomID;
            this.CanToggleState = false;
            this.State = true;
            this.Hidden = false;
        }
    }
}
